function dmsToDecimal(dms) {
  // 正则表达式用于匹配度、分、秒
  const regex = /(-?\d+)\°(\d+)'(\d+(\.\d+)?)"/
  const match = dms.match(regex)
  // console.log(match, '<<< match')
  if (!match) {
    throw new Error('Invalid DMS format')
  }

  // 提取度、分、秒的值
  const degrees = parseFloat(match[1])
  const minutes = parseFloat(match[2])
  const seconds = parseFloat(match[3] || 0) // 如果没有秒，默认为0

  // 将分和秒转换为度的小数部分
  const decimalDegrees = degrees + minutes / 60 + seconds / 3600

  return decimalDegrees
}

// 格式转换
function formatDMS(input, type = 'lat') {
  // 匹配前3位（度）、中间2位（分）、剩余所有位（秒）
  let regex = type === 'lat' ? /^(\d{2})(\d{2})(\d+)$/ : /^(\d{3})(\d{2})(\d+)$/
  const parts = input.match(regex)
  if (!parts) {
    return null
  }
  const degrees = parts[1] // 113
  const minutes = parts[2] // 87
  const seconds = parts[3] // 792667
  return (result = `${degrees}°${minutes}'${seconds}"`)
}

module.exports = {
  dmsToDecimal,
  formatDMS,
}
